package com.caocaog.market.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.caocaog.market.entity.ShopCart;

import java.util.List;

/**
 * 购物车
 *
 * @author chechen
 * @date 2022-04-06
 */
public interface ShopCartService extends IService<ShopCart> {

    /**
     * 我的购物车（缓存）
     *
     * @param memberId 用户id
     * @param shopId   店铺id
     * @return 购物车数据
     */
    List<ShopCart> myShopCart(String memberId, String shopId);

    /**
     * 操作购物车（缓存）
     * 根据shopCart对象内的type字段来判断是新增购物车还是删除购物车
     * 添加购物车一共有两大类，一类是从商品列表里选择商品、规格、属性然后添加到购物车中，第二类则是直接在购物车中对数量进行加减。
     *
     * @param shopCart 购物车对象
     * @return 操作后的购物车数据
     */
    List<ShopCart> operateShopCart(ShopCart shopCart);

    /**
     * 清空购物车（缓存）
     *
     * @param memberId 用户id
     * @param shopId   店铺id
     * @return 清空后的购物车数据
     */
    List<ShopCart> cleanShopCart(String memberId, String shopId);

    /**
     * 根据店铺id清空购物车（缓存）
     *
     * @param shopId   店铺id
     */
    void cleanShopCart(String shopId);

    /**
     * 清除购物车缓存
     * @param shopId 店铺id，为空则全清
     * @return 删除的数量
     */
    Long cleanCacheShopCart(String shopId);

    /**
     * TODO 批量添加物品到购物车
     * @param shopCartList 要添加到购物车的集合
     * @return 添加后的购物车数据
     */
    // List<ShopCart> addBatchShopCart(List<ShopCart> shopCartList);


    /*@Deprecated
    Result add(MemberCart memberCart);*/

}
